package com.cms.recursoshumanos.json.object;

import com.cms.recursoshumanos.cache.UserInfoCache;
import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.json.me.JSONArray;
import com.cms.recursoshumanos.json.me.JSONException;
import com.cms.recursoshumanos.json.me.JSONObject;
import com.cms.recursoshumanos.object.Estudio;
import com.cms.recursoshumanos.object.TipoEstudio;
import com.cms.recursoshumanos.object.Universidad;
import com.cms.recursoshumanos.object.list.ListaEstudio;
import com.cms.recursoshumanos.utilities.Tool;

public class JsonObjectGetEstudio 
{
	private static JsonObjectGetEstudio _instance = null;
	public static JsonObjectGetEstudio getInstance() {
		if(_instance == null)
			_instance = new JsonObjectGetEstudio();
		
		return _instance;
	}
	public JsonObjectGetEstudio()
	{
	}
	private String Result;
	private static final String 
			GETESTUDIO = "GETESTUDIO",
			GETESTUDIO_STATUS = "STATUS",
			GETESTUDIO_DATA = "DATA",
		
			GETESTUDIO_DATOS_ESTUDIO = "DATOS_ESTUDIO",
			GETESTUDIO_ESTUDIO_ID = "estudio_id",
			GETESTUDIO_ESTUDIO_NOMBRE = "nombre_estudio",
			GETESTUDIO_ESTUDIO_DESCRIPCION = "decripcion_estudio",
			GETESTUDIO_ESTUDIO_INIC = "fecha_inic_estudio",
			GETESTUDIO_ESTUDIO_FIN = "fecha_fin_estudio",
			GETESTUDIO_UNIVERSIDAD_ID = "universidad_id",
			GETESTUDIO_UNIVERSIDAD_NOMBRE = "nombre_universidad",
			GETESTUDIO_UNIVERSIDAD_ACRONIMO = "acronimo_universidad",
			GETESTUDIO_UNIVERSIDAD_DESCRIPCION = "descripcion_universidad",
			GETESTUDIO_TIPO_ESTUDIO_ID = "tipo_estudio_id",
			GETESTUDIO_TIPO_ESTUDIO_NOMBRE = "nombre_tipo_estudio",
			GETESTUDIO_TIPO_ESTUDIO_DESCRIPCION = "descripcion_tipo_estudio";
	

	
	
	
	public void fromJSON (String jsonString) 
	{
		if (jsonString != null)
		{
			if (!jsonString.equals(""))
			{
				try
				{
					JSONObject jsonObject = new JSONObject(jsonString);
					JSONObject getListaEstudio = jsonObject.getJSONArray(GETESTUDIO).getJSONObject(0);
					String status = getListaEstudio.getString(GETESTUDIO_STATUS);
					
					Result = status;
					
					if (status.equals(Constant.CODE_OK))
					{
		
						ListaEstudio listadoEstudio = new ListaEstudio();
						JSONArray data = getListaEstudio.getJSONArray(GETESTUDIO_DATA);
						JSONObject objeto_data = data.getJSONObject(0);
						JSONArray datos_estudio = objeto_data.getJSONArray(GETESTUDIO_DATOS_ESTUDIO);
						
						for (int i = 0; i < datos_estudio.length(); i++ )
						{
							JSONObject json_estudio = datos_estudio.getJSONObject(i);
							
							listadoEstudio.addEstudio(this.getElEstudio(json_estudio));
		
						}
						UserInfoCache.getInstance().setFechaCache(2);
						UserInfoCache.getInstance().setListaEstudio(listadoEstudio);
					
						
					}
					
				} 
				catch (JSONException ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
				catch (Exception ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
			}
			else
			{
				Result = Constant.CODE_NOT_SERVER_RESPONSE;
			}
		}
		else
		{
			Result = Constant.CODE_NOT_SERVER_RESPONSE;
		}

	}
	public Estudio getElEstudio(JSONObject json_estudio)
	{
		try 
		{
			Estudio elEstudio = new Estudio(Integer.parseInt(json_estudio.getString(GETESTUDIO_ESTUDIO_ID)),
												json_estudio.getString(GETESTUDIO_ESTUDIO_NOMBRE),
												(json_estudio.getString(GETESTUDIO_ESTUDIO_DESCRIPCION).equals("null") ?
														null :
														json_estudio.getString(GETESTUDIO_ESTUDIO_DESCRIPCION)),
												Tool.getInstance().parseStringToDate(json_estudio.getString(GETESTUDIO_ESTUDIO_INIC)),
												Tool.getInstance().parseStringToDate(json_estudio.getString(GETESTUDIO_ESTUDIO_FIN)),
												new TipoEstudio(Integer.parseInt(json_estudio.getString(GETESTUDIO_TIPO_ESTUDIO_ID)),
																json_estudio.getString(GETESTUDIO_TIPO_ESTUDIO_NOMBRE), 
																(json_estudio.getString(GETESTUDIO_TIPO_ESTUDIO_DESCRIPCION)).equals("null") ?
																		null :
																		json_estudio.getString(GETESTUDIO_TIPO_ESTUDIO_DESCRIPCION)),
												new Universidad(Integer.parseInt(json_estudio.getString(GETESTUDIO_UNIVERSIDAD_ID)),
																	json_estudio.getString(GETESTUDIO_UNIVERSIDAD_NOMBRE), 
																	json_estudio.getString(GETESTUDIO_UNIVERSIDAD_ACRONIMO), 
																	(json_estudio.getString(GETESTUDIO_UNIVERSIDAD_DESCRIPCION).equals("null") ?
																			null :
																			json_estudio.getString(GETESTUDIO_UNIVERSIDAD_DESCRIPCION)))
												
												 );
			return elEstudio;
		} 
		catch (NumberFormatException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} 
		catch (JSONException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
		
	}
	public String getResult()
	{
		return Result;
	}
	
}


